<?php

class CuentasAlojamientoController extends Sgit_Controller_Action
{

    protected $_checkZona = true;
    protected $_tipo = 'Alojamiento';


    public function _begin()
    {
        $this->anio = $this->_request->getParam('anio');
        $this->version = $this->_request->getParam('version', 0);
        $this->view->version=$version;
        
        if ($this->_idZona == 10)
        {
            $this->zonas = array(1, 3, 4, 6);
        } elseif ($this->_idZona == 18)
        {
            $this->zonas = array(1, 2, 3, 4, 6);
        } else
        {
            $this->zonas = $this->_idZona;
        }

    }


	public function indexAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_index();
        }
	}
    

	public function planAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_plan();
        }
	}    
    
	public function avanceAction()
	{
	   

       if(
        $this->_hasParam('pdf_x')  || 
        $this->_hasParam('pdf_y')  || 
        $this->_hasParam('pdf')   ||
        $this->_hasParam('excel_x')|| 
        $this->_hasParam('excel_y')|| 
        $this->_hasParam('excel'))
        {
            $this->_pdfSubTitle=$this->zona ." ".$this->_getParam('anio');
            $this->_export($this->valuesToExport());
        }else
        {
            $this->_avance();
        }
	}   

    public function _index()
    {

        $anio = $this->anio;
        $version = $this->version;
        $zonas=$this->zonas;

        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        
        $filtros->addFormSelect($f_anio);

        if(!is_array($this->zonas)){
            $f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
            $f_version->setValue($version);
            $filtros->addFormSelect($f_version);
        }


        $values = $this->_getFiltrosValues($filtros);
        $filtros->addPdf();
        $filtros->addExcel();
        $filtros->myRender();

        
      

        if ($anio)
        {
            $this->_toExport(true);

            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setZona($zonas);
            $cuentas->setVersion($version);
            $this->view->anio = $anio;

            //if($version==0)
            //{
                $estados = new Application_Model_CuentasEstados();
                $estados->setZona($zonas);
                $estados->setAnio($anio);
                $estado = $estados->getEstados($this->_tipo);
                $this->view->estados = $estado;
           // }


            $this->view->coste_sap = $cuentas->addInforme($cuentas->getCosteSapAlojamiento());
            $this->view->inversa_sap = $cuentas->addInforme($cuentas->getInversaSapAlojamiento());
            $this->view->saldo_sap = $cuentas->addInforme($cuentas->getSaldoSapAlojamiento());

            $this->view->arrendamiento = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(1));
            $this->view->seguros = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(2));
            $this->view->seguridad = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(3));
            $this->view->externos = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(8));
            $this->view->suministros = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(9));
            $this->view->comunicaciones = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(10));
            $this->view->manoobra = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(11));
            $this->view->viajes = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(12));
            $this->view->formacion = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(13));
            $this->view->imputacion = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(14));
            $this->view->renting = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(58));

            $this->view->coste_explotacion = $cuentas->addInforme($cuentas->getCosteExplotacion());

            $this->view->mantenimiento = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(4));
            $this->view->reposiciones = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(5));
            $this->view->limpieza = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(6));
            $this->view->jardineria = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(7));

            $this->view->coste_mantenimiento = $cuentas->addInforme($cuentas->getCosteMantenimiento());

            $this->view->coste_alojamiento = $cuentas->addInforme($cuentas->getCosteAlojamiento());
            $this->view->inversa_alojamiento = $cuentas->addInforme($cuentas->getInversaAlojamiento());
            $this->view->saldo_alojamiento = $cuentas->addInforme($cuentas->getSaldoAlojamiento());

            $this->view->inmovilizado_manoobra = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(15));
            $this->view->inmovilizado_materiales = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(16));
            $this->view->inmovilizado_total = $cuentas->addInforme($cuentas->getInmovilizadoAlojamiento());


            $this->view->coste_total_neto = $cuentas->addInforme($cuentas->getCosteTotalNetoAlojamiento());
            $this->view->inversa = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(17));
            $this->view->saldo_total_neto = $cuentas->addInforme($cuentas->getSaldoTotalNetoAlojamiento());


            $this->view->inactividad = $cuentas->addInforme($cuentas->getSerieNaturalezaMeses(61));
            
            
            $meses = Sgit_Util_Meses::run();

            foreach ($meses as $k => $m)
            {
                    $ico[$k] = $cuentas->icoEstado($estado[$k]) . ' ' . substr($m, 0, 3);
            }

            $this->view->meses = $ico;

        }

    }
    
    

    public function _plan()
    {

        $anio = $this->_request->getParam('anio');
        $version = $this->_request->getParam('version', 0);
        $this->view->version=$version;



        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        $filtros->addFormSelect($f_anio);

        $f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
        $f_version->setValue($version);
        $filtros->addFormSelect($f_version);
        $filtros->addPdf();
        $filtros->addExcel();
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();

        if ($anio)
        {
            $this->_toExport(true);
            
            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setVersion($version);
            $cuentas->setZona($this->_idZona);
            $this->view->anio = $anio;


            $this->view->arrendamiento = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(1));
            $this->view->seguros = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(2));
            $this->view->seguridad = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(3));
            $this->view->externos = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(8));
            $this->view->suministros = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(9));
            $this->view->comunicaciones = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(10));
            $this->view->manoobra = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(11));
            $this->view->viajes = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(12));
            $this->view->formacion = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(13));
            $this->view->imputacion = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(14));
            $this->view->renting = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(58));

            $this->view->mantenimiento = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(4));
            $this->view->reposiciones = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(5));
            $this->view->limpieza = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(6));
            $this->view->jardineria = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(7));

            $this->view->inversa = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(17));

            $this->view->inmovilizado_manoobra = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(15));
            $this->view->inmovilizado_materiales = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(16));

            $this->view->inactividad = $cuentas->addPlan($cuentas->getSerieNaturalezaMeses(61));

            $this->view->meses = Sgit_Util_Meses::run();

        }
    }

    public function _avance()
    {
        $anio = $this->_request->getParam('anio');
        $this->version = 0;
        $this->view->version=$this->version;


        $filtros = new Sgit_Form_Filtros();
        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setValue($anio);
        $filtros->addFormSelect($f_anio);

       // $f_version = new Sgit_Form_Element_Select_Version('version', array('firstBlank' => false));
       // $f_version->setValue($version);
       // $filtros->addFormSelect($f_version);
        
        $filtros->addPdf();
        $filtros->addExcel();
        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();


        if ($anio)
        {
            $this->_toExport(true);

            $cuentas = new Application_Model_Cuentas();
            $cuentas->setAnio($anio);
            $cuentas->setVersion($this->version);
            $cuentas->setZona($this->_idZona);
            $this->view->anio = $anio;

            $estados = new Application_Model_CuentasEstados();
            $estados->setZona($this->_idZona);
            $estados->setAnio($anio);
            $this->view->estados = $estados->getEstados($this->_tipo);
            
            $this->view->sap_coste =        $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(30));
            $this->view->sap_inversa =      $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(31));
            $this->view->arrendamiento =    $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(1));
            $this->view->seguros =          $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(2));
            $this->view->seguridad =        $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(3));
            $this->view->externos =         $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(8));
            $this->view->suministros =      $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(9));
            $this->view->comunicaciones =   $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(10));
            $this->view->manoobra =         $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(11));
            $this->view->viajes =           $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(12));
            $this->view->formacion =        $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(13));
            $this->view->imputacion =       $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(14));
            $this->view->renting =          $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(58));
            $this->view->mantenimiento =    $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(4));
            $this->view->reposiciones =     $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(5));
            $this->view->limpieza =         $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(6));
            $this->view->jardineria =       $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(7));
            $this->view->inversa =          $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(17));
            $this->view->inmovilizado_manoobra = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(15));
            $this->view->inmovilizado_materiales = $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(16));
            $this->view->inactividad =      $cuentas->addAvance($cuentas->getSerieNaturalezaMeses(61));

            $this->view->meses = Sgit_Util_Meses::run();

        }
    }




    
    public function valuesToExport()
    {
        $cuentas = new Application_Model_Cuentas();
        $cuentas->setAnio($this->anio);
        $cuentas->setVersion($this->version);
        $cuentas->setZona($this->zonas);
            
        foreach($cuentas->addExport($cuentas->getCosteSapAlojamiento()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getInversaSapAlojamiento()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSaldoSapAlojamiento()) as $f) $rows[]=$f;    
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(1)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(2)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(3)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(8)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(9)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(10)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(11)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(12)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(13)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(14)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(58)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getCosteExplotacion()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(4)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(5)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(6)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(7)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getCosteMantenimiento()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getCosteAlojamiento()) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getInversaAlojamiento()) as $f) $rows[]=$f;    
        foreach($cuentas->addExport($cuentas->getSaldoAlojamiento()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(15)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(16)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getInmovilizadoAlojamiento()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getCosteTotalNetoAlojamiento()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(17)) as $f) $rows[]=$f;
        foreach($cuentas->addExport($cuentas->getSaldoTotalNetoAlojamiento()) as $f) $rows[]=$f;   
        foreach($cuentas->addExport($cuentas->getSerieNaturalezaMeses(61)) as $f) $rows[]=$f;
        
        return $rows;
    }
    

    



    public function editarAction()
    {

        $tipo = $this->_request->getParam('tipo');

        $keys['id_zona'] = $this->_request->getParam('idZona');
        $keys['mes'] = $this->_request->getParam('mes');
        $keys['anio'] = $this->_request->getParam('anio');
        $keys['id_naturaleza'] = $this->_request->getParam('id_naturaleza');
        $keys['version'] = $this->_request->getParam('version');


        $dato = Sgit_Filter_FloatNull::filter($this->_request->getParam('dato'));
        $fecha = date('Y-m-d');


        if ($tipo == 'presupuesto')
        {
            $forUpdate['f_presupuesto'] = $fecha;
            $forUpdate['presupuesto'] = $dato;
        } elseif ($tipo == 'estimado')
        {
            $forUpdate['f_estimado'] = $fecha;
            $forUpdate['estimado'] = $dato;
        }


        


        $cuentas = new Application_Model_Cuentas();
        $cuentas->replace($keys, $forUpdate);

        $where['id_zona=?'] = $keys['id_zona'];
        $where['id_naturaleza=?'] = $keys['id_naturaleza'];
        $where['anio=?'] = $keys['anio'];
        $where['version=?'] = $keys['version'];


        $tipo_quote = "SUM(" . $cuentas->getAdapter()->quoteIdentifier($tipo) . ")";
        $suma = $cuentas->getOne($tipo_quote, $where);

        $json['status'] = 'ok';
        $json['suma'] = $this->view->numEs($suma, 0);


        $this->_helper->json($json);

    }


    public function lockAction()
    {

        $keys['id_zona'] = $this->_request->getParam('idZona');
        $keys['mes'] = $this->_request->getParam('mes');
        $keys['anio'] = $this->_request->getParam('anio');
        $keys['version'] = $this->_request->getParam('version');
        $keys['tipo'] = $this->_tipo;

        $forUpdate['objeto_cambio'] = $this->_request->getParam('objeto_cambio');
        $forUpdate['notas_cambio'] = $this->_request->getParam('notas');
        $forUpdate['cambio_aceptado'] = null;
        $forUpdate['estado'] = 0;
        $forUpdate['propone_cambio'] = $this->_auth->getIdentity()->id;
        $forUpdate['fecha_peticion_cambio'] = date('Y-m-d');
        $forUpdate['fecha_cierre'] = date('Y-m-d');


        $cuentas = new Application_Model_CuentasEstados();
        $cuentas->replace($keys, $forUpdate);

        $json['status'] = 'ok';
        $this->_helper->json($json);
    }


}
